﻿using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

public partial class _SENAC : System.Web.UI.Page
{
    SqlConnection conexaoIntranet = new SqlConnection(ConfigurationManager.ConnectionStrings["conexao_intranet"].ConnectionString);

    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void btnProcessar_Click(object sender, EventArgs e)
    {
        string nomeAluno, endereco, complemento, cidade, bairro, estado, cep, telefone = "", telefone2 = "", identidade = "", emissor = "";
        string dataNascimento, sexo, estadoCivil = "", email, cpf = "", nacionalidade, escolaridade = "", codEscolaridade = "";
        wsMiraPF.Mira ws = new wsMiraPF.Mira();
        DataSet dsPF = ws.PesquisaPessoaFisicaPorCPF(txtCPF.Text);
        if (dsPF.Tables[0].Rows.Count > 0)
        {
            DataSet dsEnderecos = ws.PesquisaEnderecoDaPessoaFisica(int.Parse(dsPF.Tables[0].Rows[0]["CD_PsaFsc"].ToString()));
            DataSet dsEscolaridade = ws.PesquisaEscolaridadeDaPessoaFisica(int.Parse(dsPF.Tables[0].Rows[0]["CD_PsaFsc"].ToString()));
            DataSet dsDocumentacao = ws.PesquisaDocumentacaoDaPessoaFisica(int.Parse(dsPF.Tables[0].Rows[0]["CD_PsaFsc"].ToString()));
            DataSet dsTelefones = ws.PesquisaTelefonePorPessoaFisica(int.Parse(dsPF.Tables[0].Rows[0]["CD_PsaFsc"].ToString()));
            DataSet dsLocalidade = ws.PesquisaLocalidade(16);
            DataRow[] linha = dsLocalidade.Tables[0].Select("CD_Lcl = " + int.Parse(dsEnderecos.Tables[0].Rows[0]["CD_Lcl"].ToString()));

            //************** Atribui os valores às variáveis ***********//
            nomeAluno = dsPF.Tables[0].Rows[0]["NM_CmtPsaFsc"].ToString();
            endereco = dsEnderecos.Tables[0].Rows[0]["NM_LgrPsaFsc"].ToString();
            complemento = dsEnderecos.Tables[0].Rows[0]["NM_CmlLgrPsaFsc"].ToString();
            cidade = linha[0]["NM_Lcl"].ToString();
            bairro = dsEnderecos.Tables[0].Rows[0]["NM_BrrPsaFsc"].ToString();
            estado = "PE";
            cep = dsEnderecos.Tables[0].Rows[0]["NR_CEPPsaFsc"].ToString();
            int i = 0;
            foreach (DataRow linhaTelefone in dsTelefones.Tables[0].Rows)
            {
                i++;
                if (i == 1)
                {
                    if (linhaTelefone["NR_TlnPsaFsc"].ToString().Length >= 14)
                        telefone = linhaTelefone["NR_TlnPsaFsc"].ToString().Substring(0,14);
                    else
                        telefone = linhaTelefone["NR_TlnPsaFsc"].ToString();

                }
                if (i == 2)
                    telefone2 = linhaTelefone["NR_TlnPsaFsc"].ToString();
            }

            foreach (DataRow linhaDocumentacao in dsDocumentacao.Tables[0].Rows)
            {

                if (linhaDocumentacao["CD_TpoIdn"].ToString() == "1")
                {
                    identidade = linhaDocumentacao["NR_IdnPsaFsc"].ToString();
                    emissor = linhaDocumentacao["DC_OroExoIdnPsaFsc"].ToString();
                }
                else if (linhaDocumentacao["CD_TpoIdn"].ToString() == "2")
                {
                    cpf = linhaDocumentacao["NR_IdnPsaFsc"].ToString();
                }
            }

            dataNascimento = dsPF.Tables[0].Rows[0]["DT_NscPsaFsc"].ToString().Replace("00:00:00", "");
            if (dataNascimento == "")
                dataNascimento = "01/01/1990";
            if (dsPF.Tables[0].Rows[0]["CD_TpoSxe"].ToString() == "0")
                sexo = "Masculino";
            else
                sexo = "Feminino";

            switch (dsPF.Tables[0].Rows[0]["CD_TpoEstCvl"].ToString())
            {
                case "1":
                    estadoCivil = "Casado(A)";
                    break;
                case "2":
                    estadoCivil = "Solteiro(A)";
                    break;
                case "3":
                    estadoCivil = "Viúvo(A)";
                    break;
                case "4":
                    estadoCivil = "Divorciado(A)";
                    break;
                case "5":
                    estadoCivil = "Separado(A)";
                    break;
            }
            email = dsPF.Tables[0].Rows[0]["NM_EndCriEltPsaFsc"].ToString();
            nacionalidade = "BRASILEIRO(A)";

            if (dsEscolaridade.Tables[0].Rows.Count > 0)
            {
                switch (dsEscolaridade.Tables[0].Rows[0]["CD_GruEsl"].ToString())
                {
                    case "1":
                        //escolaridade = "Ensino Fundamental incompleto";
                        escolaridade = "Ensino fundamental incompleto";
                        codEscolaridade = "1";
                        break;
                    case "2":
                        //escolaridade = "Ensino fundamental completo";
                        escolaridade = "Ensino fundamental completo";
                        codEscolaridade = "1";
                        break;
                    case "3":
                        //escolaridade = "Ensino médio incompleto";
                        escolaridade = "Ensino médio incompleto";
                        codEscolaridade = "2";
                        break;
                    case "4":
                        //escolaridade = "Ensino médio completo";
                        escolaridade = "Ensino médio completo";
                        codEscolaridade = "2";
                        break;
                    case "5":
                        //escolaridade = "Graduação incompleto";
                        escolaridade = "Superior incompleto";
                        codEscolaridade = "3";
                        break;
                    case "6":
                        //escolaridade = "Graduação completo";
                        escolaridade = "Superior completo";
                        codEscolaridade = "3";
                        break;
                    case "7":
                        //escolaridade = "Tecnologia incompleto";
                        escolaridade = "Superior incompleto";
                        codEscolaridade = "3";
                        break;
                    case "8":
                        //escolaridade = "Tecnologia completo";
                        escolaridade = "Superior completo";
                        codEscolaridade = "3";
                        break;
                    case "9":
                        //escolaridade = "Especialização incompleto";
                        escolaridade = "Superior completo";
                        codEscolaridade = "3";
                        break;
                    case "10":
                        //escolaridade = "Especialização completo";
                        escolaridade = "Superior completo";
                        codEscolaridade = "3";
                        break;
                    case "11":
                        //escolaridade = "Mestrado incompleto";
                        escolaridade = "Superior completo";
                        codEscolaridade = "3";
                        break;
                    case "12":
                        //escolaridade = "Mestrado completo";
                        escolaridade = "Superior completo";
                        codEscolaridade = "3";
                        break;
                    case "13":
                        //escolaridade = "Doutorado incompleto";
                        escolaridade = "Superior completo";
                        codEscolaridade = "3";
                        break;
                    case "14":
                        //escolaridade = "Doutorado completo";
                        escolaridade = "Superior completo";
                        codEscolaridade = "3";
                        break;
                    case "15":
                        //escolaridade = "Phd incompleto";
                        escolaridade = "Superior completo";
                        codEscolaridade = "3";
                        break;
                    case "16":
                        //escolaridade = "Phd completo";
                        escolaridade = "Superior completo";
                        codEscolaridade = "3";
                        break;
                    case "17":
                        //escolaridade = "Extensão completo";
                        escolaridade = "Superior completo";
                        codEscolaridade = "3";
                        break;
                    case "18":
                        //escolaridade = "Ensino fundamental cursando";
                        escolaridade = "Ensino fundamental cursando";
                        codEscolaridade = "1";
                        break;
                    case "19":
                        //escolaridade = "Ensino médio cursando";
                        escolaridade = "Ensino médio cursando";
                        codEscolaridade = "2";
                        break;
                    case "20":
                        //escolaridade = "Graduação cursando";
                        escolaridade = "Superior cursando";
                        codEscolaridade = "3";
                        break;
                    case "21":
                        //escolaridade = "Pós-graduação cursando";
                        escolaridade = "Superior completo";
                        codEscolaridade = "3";
                        break;
                }
            }
            //Response.Write("<hr><strong>Estrutura</strong><br />        string nomeAluno, endereco, complemento, cidade, bairro, estado, cep, telefone, telefone2, identidade, emissor; <br />dataNascimento, sexo, estadoCivil, email, cpf, nacionalidade, escolaridade<hr>");
            //Response.Write("<hr>" + nomeAluno + "<br />" + endereco + "<br />" + complemento + "<br />" + cidade + "<br />" + bairro + "<br />" + estado + "<br />" + cep + "<br />" + telefone + "<br />" + telefone2 + "<br />" + identidade + "<br />" + emissor + "<br />" + dataNascimento + "<br />" + sexo + "<br />" + estadoCivil + "<br />" + email + "<br />" + cpf + "<br />" + nacionalidade + "<br />" + escolaridade + "<hr>");
            //************** Atribui os valores às variáveis ***********//
            cpf = cpf.Substring(0, 3) + "." + cpf.Substring(3, 3) + "." + cpf.Substring(6, 3) + "-" + cpf.Substring(9, 2);
            cep = cep.Replace(".", "").Replace("-", "");
            if (CandidatoEncontrado(cpf))
            {
               // if (AtualizaCandidato(cpf, endereco, complemento, cidade, bairro, cep, telefone, telefone2))
                    lblMensagem.Text = "Candidato atualizado com sucesso - " + nomeAluno;
            }
            else
            {
                if (InsereCandidato(cpf, nomeAluno, endereco, complemento, cidade, bairro, estado, cep, telefone, telefone2, identidade, emissor, dataNascimento, sexo, estadoCivil, email, nacionalidade, escolaridade, codEscolaridade))
                    lblMensagem.Text = "Candidato inserido com sucesso - " + nomeAluno;
            }
            if (ProcessaQualificacao(cpf))
                lblMensagem.Text += "<br />Qualificação processada com sucesso";
            txtCPF.Text = "";
            txtCPF.Focus();
        }
        else
        {
            lblMensagem.Text = "CPF não encontrado no sistema";
        }
    }

    private bool ProcessaQualificacao(string cpf)
    {
        int linhasAfetadas = 0;
        SqlConnection conexaoIntranet = new SqlConnection(ConfigurationManager.ConnectionStrings["conexao_intranet"].ConnectionString);
        try
        {
            conexaoIntranet.Open();
            string[] codigos = ddCursos.SelectedValue.Split(';'); //o codigos[0] é o codcurso e o codigos[1] é a categoria
            SqlCommand insereCurso = new SqlCommand();
            insereCurso.Connection = conexaoIntranet;
            string coluna = "";
            switch (codigos[1].ToString())
            {
                case "1":
                    coluna = "Capacitacao";
                    break;
                case "2":
                    coluna = "Aperfeicoamento";
                    break;
                case "4":
                    coluna = "Informatica";
                    break;
                case "5":
                    coluna = "Idioma";
                    break;
                case "6":
                    coluna = "AtivComplementares";
                    break;
                case "8":
                    coluna = "Aprendiz";
                    break;
            }
            insereCurso.CommandText = "UPDATE CamaraInscritos SET " + coluna + " = 1 WHERE CPF = '" + cpf + "'";
            insereCurso.ExecuteNonQuery();
            insereCurso.CommandText = "INSERT INTO CamaraInscritosCursos (CPF, CodCurso) values ('" + cpf + "', " + codigos[0].ToString() + ")";
            linhasAfetadas = insereCurso.ExecuteNonQuery();
        }
        catch (Exception erro)
        {
            if (erro is SqlException)
            {
                lblMensagem.ForeColor = System.Drawing.Color.Red;
                lblMensagem.Text = "Você não pode cadastrar o mesmo curso 2 vezes para o mesmo inscrito";
            }
            else
                lblMensagem.Text = erro.Message;
        }
        finally
        {
            conexaoIntranet.Close();
        }
        return linhasAfetadas == 1;
    }

    private bool InsereCandidato(string cpf, string nomeAluno, string endereco, string complemento, string cidade, string bairro, string estado, string cep, string telefone, string telefone2, string identidade, string emissor, string dataNascimento, string sexo, string estadoCivil, string email, string nacionalidade, string escolaridade, string codEscolaridade)
    {
        int linhasAfetadas = 0;
        try
        {
            conexaoIntranet.Open();
            DateTime dtNascimento = Convert.ToDateTime(dataNascimento);
            dataNascimento = dtNascimento.ToString("MM-dd-yyyy"); 
            SqlCommand insereCandidato = new SqlCommand("INSERT INTO CamaraInscritos (CPF, NomeAluno, Endereco, Complemento, Cidade, Bairro, Estado, CEP, Telefone, Telefone2, Identidade, Em, DataNascimento, Sexo, EstadoCivil, Email, Nacionalidade, Escolaridade, CodEscolaridade) VALUES ('"+ cpf +"', '"+ nomeAluno +"', '"+ endereco +"', '"+ complemento +"', '"+ cidade +"', '"+ bairro +"', '"+ estado +"', '"+ cep +"', '"+ telefone +"', '"+ telefone2 +"', '"+ identidade +"', '"+ emissor +"', '"+ dataNascimento +"', '"+ sexo +"', '"+ estadoCivil +"', '"+ email +"', '"+ nacionalidade +"', '"+ escolaridade +"', "+ codEscolaridade +")", conexaoIntranet);
            linhasAfetadas = insereCandidato.ExecuteNonQuery();
        }
        catch (Exception erro)
        {
            lblMensagem.ForeColor = System.Drawing.Color.Red;
            lblMensagem.Text = erro.Message;
        }
        finally
        {
            conexaoIntranet.Close();
        }
        return linhasAfetadas == 1;
    }

    private bool AtualizaCandidato(string cpf, string endereco, string complemento, string cidade, string bairro, string cep, string telefone, string telefone2)
    {
        int linhasAfetadas = 0;
        try
        {
            conexaoIntranet.Open();
            SqlCommand atualizaCandidato = new SqlCommand("UPDATE CamaraInscritos SET Endereco = '"+ endereco +"', Complemento = '"+ complemento +"', Cidade = '"+ cidade +"', Bairro = '"+ bairro +"', CEP = '"+ cep +"', Telefone = '"+ telefone +"', Telefone2 = '"+ telefone2 +"' WHERE CPF = '" + cpf + "'", conexaoIntranet);
            linhasAfetadas = atualizaCandidato.ExecuteNonQuery();
        }
        catch (Exception erro)
        {
            lblMensagem.ForeColor = System.Drawing.Color.Red;
            lblMensagem.Text = erro.Message;
        }
        finally
        {
            conexaoIntranet.Close();
        }
        return linhasAfetadas == 1;
    }

    private bool CandidatoEncontrado(string cpf)
    {
        bool encontrado = false;
        try
        {
            conexaoIntranet.Open();
            SqlCommand pesquisaCandidato = new SqlCommand("SELECT CPF FROM CamaraInscritos WHERE CPF = '"+ cpf +"'", conexaoIntranet);
            SqlDataReader drPesquisaSandidato = pesquisaCandidato.ExecuteReader();
            encontrado = drPesquisaSandidato.HasRows;
            drPesquisaSandidato.Close();
        }
        catch (Exception erro)
        {
            lblMensagem.ForeColor = System.Drawing.Color.Red;
            lblMensagem.Text = erro.Message;
        }
        finally
        {
            conexaoIntranet.Close();
        }
        return encontrado;
    }


}